﻿Imports Microsoft.WindowsAzure.Storage.Table

Namespace Azure.Table

    ''' <summary>
    ''' An event stream reader that gets its events from an Azure Table 
    ''' </summary>
    ''' <typeparam name="TAggregate">
    ''' The data type of the aggregate against which the events are stored
    ''' </typeparam>
    ''' <typeparam name="TAggregationKey">
    ''' The data type that uniquely identifies the aggregate instance that teh event stream is connected to
    ''' </typeparam>
    ''' <remarks>
    ''' Azure Table Storage uses a continuation token in the response header to indicate that there are additional results for a query. 
    ''' You can retrieve these results by issuing another request that is parameterized by the continuation token. 
    ''' This scenario enables you to retrieve items beyond the 1,000-entity limit.
    ''' </remarks>
    Public Class TableEventStreamReader(Of TAggregate As CQRSAzure.EventSourcing.IAggregationIdentifier, TAggregationKey)
        Inherits TableEventStreamBase(Of TAggregate, TAggregationKey)
        Implements IEventStreamReader(Of TAggregate, TAggregationKey)

        Public Function GetEvents() As IEnumerable(Of IEvent) Implements IEventStreamReader(Of TAggregate, TAggregationKey).GetEvents
            Throw New NotImplementedException()
        End Function

        Public Function GetEvents(StartingVersion As UInteger) As IEnumerable(Of IEvent) Implements IEventStreamReader(Of TAggregate, TAggregationKey).GetEvents
            Throw New NotImplementedException()
        End Function

        Public Function GetEventsWithContext() As IEnumerable(Of IEventContext) Implements IEventStreamReader(Of TAggregate, TAggregationKey).GetEventsWithContext
            Throw New NotImplementedException()
        End Function

    End Class
End Namespace